#ifndef CONTACTLIB_H
#define CONTACTLIB_H

//该类维护一个好友列表，从数据库中加载
//List模型
//(QString,QString)--->("xqq220502","iamxqq")-->>(OC,name);

#include <QObject>
#include <QList>
#include <QPair>
#include <QHash>
class ContactLib : public QObject
{
    Q_OBJECT
public:
    ContactLib(ContactLib&)=delete;
    ContactLib& operator=(ContactLib&)=delete;
    static ContactLib* getInstance();
    void clearContactLib();
    QString getName(const QString& oc);
    bool isEmpty();
    bool contain(const QString& oc);
    void removeContact(const QString& oc);
    void appendContact(const QString& friendoc,const QString& friendname);
signals:
    //好友库加载完毕信号
    void s_friendLibLoadDone();
    void s_appendFriend(const QString& friendoc,const QString& friendname);
public slots:
    //接收数据库线程的列表
    void recvContactList(const QList<QPair<QString,QString>>&);
    //外部接口，获取库的好友列表
    QList<QPair<QString,QString>> getFriendList();
private:
    ContactLib();
    static ContactLib* contactlib;
    QList<QPair<QString,QString>> friendlist;
    QHash<QString,QString> friendlisthash;
};

#endif // CONTACTLIB_H
